﻿
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Configuration;
using System.Data.SqlClient;
using System.Web.Configuration;
using SW_SoftBully.Models.ModuloAdministracion.Producto;
namespace SW_SoftBully.Models.ModuloAdministracion.SolicitudProducto
{
    public class SolicitudProductoDAO
    {



        public string mantenerSolicitudProducto(SolicitudProductoBean solicitudproducto)
        {

           

            string mensaje = "";
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            string commandString = "";
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            SqlCommand sqlCmd;
            sqlCon.Open();
            int idSolicitud=0;
            try
            {

                if (solicitudproducto.accion == 0)
                {
                    commandString = "update  solicitud_insumo set estado=0 where id_solicitud_insumo=" + solicitudproducto.idSolicitudProducto;
                    mensaje = "Se elimino la solicitud correctamente";

                }
                if (solicitudproducto.accion == 1)
                {
                    //  aqui hay que poner la fecha commandString = "insert into solicitud_insumo values(1,1," + solicitudproducto.id_edificio + ",'" + solicitudproducto.comentario + "')";
                    commandString = "insert into solicitud_insumo values("+solicitudproducto.estaAprobado+",1," + solicitudproducto.id_edificio + ",'" + solicitudproducto.comentario + "','"+solicitudproducto.fecha+"')";
                    mensaje = "Se inserto la solicitud correctamente";
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                sqlCmd.ExecuteNonQuery();
                   
                    commandString = "select max(id_solicitud_insumo) from solicitud_insumo ";

                      sqlCmd = new SqlCommand(commandString, sqlCon);
                     if (!Convert.IsDBNull(sqlCmd.ExecuteScalar()))
                    {
                        idSolicitud = (int)sqlCmd.ExecuteScalar();
                    }
                    else
                    {

                        idSolicitud = 1;
                    }
                }
                if (solicitudproducto.accion == 2)
                {
                    commandString = "update solicitud_insumo set comentario='" + solicitudproducto.comentario + "',fecha='" + solicitudproducto.fecha + "' where id_solicitud_insumo="+solicitudproducto.idSolicitudProducto ;
                    mensaje = "Se modifico la solicitud correctamente";
                }
           
                if (solicitudproducto.accion == 1)
                {

                  

                    String[] aux;
                    aux = solicitudproducto.lineaSol.Split('|');
                    for (int i = 0; i < (aux.Count()); i=i+4)
                    {

                        commandString = "insert into solicitud_x_producto values(" + aux[i + 2] + ",''," + aux[i + 0] + "," + idSolicitud + ",'" + aux[i + 3] + "')";
                            sqlCmd = new SqlCommand(commandString, sqlCon);
                            sqlCmd.ExecuteNonQuery();
                        
                    }

                }else{
                         sqlCmd = new SqlCommand(commandString, sqlCon);
                sqlCmd.ExecuteNonQuery();
                }



                sqlCon.Close();
            }

            catch (Exception ex)
            {

                if (solicitudproducto.accion == 0)
                {
                    mensaje = "No se pudo eliminar la solicitud correctamente";

                }
                if (solicitudproducto.accion == 1)
                {
                    mensaje = "No se pudo insertar la solicitud correctamente";
                }
                if (solicitudproducto.accion == 2)
                {
                    mensaje = "No se pudo modificar la solicitud correctamente";
                }
                sqlCon.Close();
                //  horario.conexion = "Falla en Conexion";
                return mensaje;
            }
            return mensaje;
        }

        public List<DetSolicitud> buscarDetSolicitudProducto(int idSol)
        {
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            List<DetSolicitud> listaProducto = new List<DetSolicitud>();
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {

                string commandString = "select  s.cantidad,s.idproducto,s.unidad,s.comentario,p.nombre from solicitud_x_producto s , producto p where  s.IdProducto=p.IdProducto and s.id_solicitud_insumo=" + idSol;







                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    DetSolicitud prod = new DetSolicitud();
                    //cliente. = (int)dataReader["idUsuario"];
                    prod.nombre = (string)dataReader["nombre"];
                    prod.um = (string)dataReader["unidad"];
                    prod.cantidad = Convert.ToDouble(dataReader["cantidad"]);
                    prod.comentario = (string)dataReader["comentario"];
                    prod.idSolicitud = idSol;
                    listaProducto.Add(prod);
                }
                dataReader.Close();
                sqlCon.Close();

                return listaProducto;
            }
            catch (Exception ex)
            {
                sqlCon.Close();
                return null;

            }



        }


        public List<SolicitudProductoBean> buscarSolicitudProducto(FiltroSolicitudProdcuto filtro)
        {
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            List<SolicitudProductoBean> listaSolicitudProducto = new List<SolicitudProductoBean>();
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {

                string commandString = "select pe.nombres,pe.apellidos,s.comentario,s.esta_aprobado,s.estado,s.fecha,s.id_Edificio,s.id_Edificio,s.id_solicitud_insumo,count(*) 'nroItems',SUM(sp.cantidad*producto.precio_estimado) 'monto'  from producto, solicitud_insumo s , solicitud_x_producto sp,persona pe where pe.id_persona=s.esta_aprobado and sp.IdProducto=producto.IdProducto   and s.id_solicitud_insumo=sp.id_solicitud_insumo and s.estado =1 and s.id_Edificio =" + filtro.id_edificio + "   ";




                string auxFiltro = "";
                //  where p.Nombres like '%asd%' and p.Apellidos like '%asd%' and c.Id_Cargo =2 and p.Nro_Documento_persona like '%1%'"



                if (!(filtro.fechaFinal == null || filtro.fechaFinal.Trim().Equals("")))
                {
                    auxFiltro = auxFiltro + " and  fecha<= '" + filtro.fechaFinal + "'  ";
                }



                if (!(filtro.fechaInicial == null || filtro.fechaInicial.Trim().Equals("")))
                {
                    auxFiltro = auxFiltro + " and  fecha >= '" + filtro.fechaInicial + "'  ";
                }




                commandString = commandString + auxFiltro;
                commandString = commandString + "  group by pe.nombres,pe.apellidos, s.comentario,s.esta_aprobado,s.estado,s.fecha,s.id_Edificio,s.id_Edificio,s.id_solicitud_insumo";

                //borrar esto
                //commandString = "select * from solicitud_insumo where estado =1 ";
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();
                DateTime a;
                string nombre;
                while (dataReader.Read())
                {
                    SolicitudProductoBean prod = new SolicitudProductoBean();
                    //cliente. = (int)dataReader["idUsuario"];
                    prod.comentario = (string)dataReader["comentario"];
                    prod.idSolicitudProducto = (int)dataReader["id_solicitud_insumo"];
                    prod.nroItems = (int)dataReader["nroItems"];
                    prod.monto = Convert.ToSingle( dataReader["monto"]);
                    // prod.fecha = (DateTime)dataReader["fecha"];
                    a = (DateTime)dataReader["fecha"];
                                        prod.fecha = a.ToShortDateString();
                                        nombre = (string)dataReader["nombres"];
                                        nombre =nombre + " " + (string)dataReader["apellidos"];
                    prod.nombre=nombre;
                    listaSolicitudProducto.Add(prod);
                }
                dataReader.Close();
                sqlCon.Close();

                return listaSolicitudProducto;
            }
            catch (Exception ex)
            {
                sqlCon.Close();
                return null;

            }



        }

       

    }


}